package model;


import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import model.RRR;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;


public class Wynik {
	  public static ArrayList<RRR> parsujlokalizacje(){
          JSONObject json;
          JSONArray contacts = null;
          ArrayList<RRR> results = new ArrayList<RRR>();
          //try {
                  /*Iterator uu=(KlasaStatyczna.getWsp()).iterator();
                                  while(uu.hasNext()){
                                          Wspolrzedne te=(Wspolrzedne)uu.next();
                                          results.add(new RRR(te.getNazwa()));
                                          }*/
          //      contacts = Wynik.json.getJSONArray("lokalizacje");
          /*for (int i = 0; i < contacts.length(); i++) {
                  JSONObject c = contacts.getJSONObject(i);
                  Lokalizacje rr=new Lokalizacje(c.getString("lokalizacke_nazwa"),c.getString("lokalizacje_idx"), c.getString("lokalizacje_idx"), c.getString("lokalizacje_klient"));
                  KlasaStatyczna.addwsp(new Wspolrzedne(c.getString("lokalizacje_idx"), c.getString("lokalizacje_idx"), c.getString("lokalizacke_nazwa")));
                  results.add(rr);
          }*/
          return results;
  /*      } catch (JSONException e) {
                  e.printStackTrace();
                  return null;
          }*/
  }
  private static int parsuj(String h)
  {
          return 2;
  }
  public static int  parsuj()
  {
          Iterator n=Wynik.json.keys();
          JSONArray contacts = null;
          while(n.hasNext())
          {
              String h=(String)n.next();
              System.out.println(">>>"+h);
              /*if(h.equals(POLATABEL.W.LOKALIZACJE_TABELA))
              {
                          //wyposarzenie
              }*/
              if(h=="calendar")
              {
                          //wyposarzenie
              }
              if(h.equals(POLATABEL.LOKALIZACJE_TABELA))
              {
            	  try 
                  {
                  contacts = Wynik.json.getJSONArray(POLATABEL.LOKALIZACJE_TABELA);
                  for (int i = 0; i < contacts.length(); i++) 
                	  KlasaStatyczna.lokalizacje.add(new Lokalizacje(contacts.getJSONObject(i)));
                  System.out.println(KlasaStatyczna.lokalizacje);
                  } 
                  catch (JSONException e) 
                  {
                	  e.printStackTrace();
                  }
                  contacts =null;
              }
              if(h.equals("rezerwacje"))
              {
                          //rezerwacje
                          ///////////////////////
              try 
              {
              contacts = Wynik.json.getJSONArray("rezerwacje");
              for (int i = 0; i < contacts.length(); i++) 
            	  KlasaStatyczna.rezerwacje.add(new Rezerwacje(contacts.getJSONObject(i)));
              System.out.println(KlasaStatyczna.rezerwacje);
              } 
              catch (JSONException e) 
              {
            	  e.printStackTrace();
              }
              contacts =null;
                          ////////////////////////
              }
          }
          return 2;
          
  }
  /*
   * pobiera cala lokalizacje o danej nazwie
   * @param String nazwa_
   * return Lokalizacje
   */
  public static Lokalizacje pobierzLokalizacje(String nazwa_)
  {
          Lokalizacje la=null;
          for(Lokalizacje l:KlasaStatyczna.lokalizacje)
                  if( l.nazwa==nazwa_)
                  {
                          la=l;
                          break;
                  }
          return la;
  }
  public static void putRoomsToLocation(Set<Pokoj> results)
  {
          KlasaStatyczna.lokalizacje.clear();
          Set<Lokalizacje> a=KlasaStatyczna.lokalizacje;
          Lokalizacje p;
          if (a.size()==0)
          {
                  p=new Lokalizacje("Test");
                  p.pokoje=results;
                  a.add(p);
          }
          KlasaStatyczna.lokalizacje=a;
  }
  
  public static int parsujzoomy()
  {
          Zom m=new Zom();
          JSONArray contacts = null;
          Set<Zom> results = new TreeSet<Zom>();
          try {
                  contacts = Wynik.json.getJSONArray(m.ta());
          for (int i = 0; i < contacts.length(); i++) {
                  results.add(new Zom(contacts.getJSONObject(i)));
          }
          System.out.println(results);
          //putRoomsToLocation(results);
          } catch (JSONException e) {
                  e.printStackTrace();
          }
          return (KlasaStatyczna.status!=results.size())?results.size():KlasaStatyczna.status;
  }
  public static int parsujPokoje()
  {
          Pokoj m=new Pokoj();
          JSONArray contacts = null;
          Set<Pokoj> results = new TreeSet<Pokoj>();
          try {
                  contacts = Wynik.json.getJSONArray(m.ta());
          for (int i = 0; i < contacts.length(); i++) {
                  results.add(new Pokoj(contacts.getJSONObject(i)));
          }
          putRoomsToLocation(results);
          } catch (JSONException e) {
                  e.printStackTrace();
          }
          return (KlasaStatyczna.status!=results.size())?results.size():KlasaStatyczna.status;
  }
  public static void dd(String h,String az){
          JSONObject json;
          JSONArray contacts = null;
          ArrayList<RRR> results = new ArrayList<RRR>();
          try {
                  contacts = Wynik.json.getJSONArray(h);
          for (int i = 0; i < contacts.length(); i++) {
                  JSONObject c = contacts.getJSONObject(i);
                  RRR rr=new RRR(c.getString(az));
                  results.add(rr);
          }
          } catch (JSONException e) {
                  e.printStackTrace();
          }
  }
  public static void dd(){
          JSONObject json;
          JSONArray contacts = null;
          ArrayList<RRR> results = new ArrayList<RRR>();
          try {
                  contacts = Wynik.json.getJSONArray("products");
          for (int i = 0; i < contacts.length(); i++) {
                  JSONObject c = contacts.getJSONObject(i);
                  /*String id = c.getString("name");
                  String name = c.getString("price");
                  String email = c.getString("idnr");
                  System.out.println(id+""+name+""+email);*/
                  RRR rr=new RRR(c.getString("idnr"));
                  results.add(rr);
          }
          } catch (JSONException e) {
                  e.printStackTrace();
          }
  }
  public static boolean zamien0i1(String znacznik,String a){
          String[] d=a.split(",");
          boolean c=false;
          for (int i = 0; i < d.length; i++) {
                  d[i]=d[i].replace("\"", "");
                  String[] y=d[i].split(":");
                  if (y[0].equals(znacznik)){
                          c=(y[1].equals("0"))?true:false;}
          }
          return c;
  }
  public static String[] wsp(String b){
          String a="";
          
          //String test="{'x':[{'xid':'1','xx':'7.168966287562862','xid2':null},{'xid':'2','xx':'50.29196905635706','xid2':null},{'xid':'3','xx':'53.25659076376557','xid2':null},{'xid':'4','xx':'49.136871552764845','xid2':null},{'xid':'5','xx':'51.978961025301224','xid2':null},{'xid':'6','xx':'53.91784891162862','xid2':null}],'y':[{'yid':'1','yy':'4.416623935103416','yid2':null},{'yid':'2','yy':'14.43600967526436','yid2':null},{'yid':'3','yy':'22.86536581814289','yid2':null},{'yid':'4','yy':'15.836549922823904','yid2':null},{'yid':'5','yy':'19.726738035678864','yid2':null},{'yid':'6','yy':'19.73786987364292','yid2':null}],'success':1}";
          try {
                  a=null;
                  a =(String) Wynik.json.get(b).toString();
          /*if(b.equals("x"))
                  a ="[{'xid':'1','xx':'7.168966287562862','xid2':null},{'xid':'2','xx':'50.29196905635706','xid2':null},{'xid':'3','xx':'53.25659076376557','xid2':null},{'xid':'4','xx':'49.136871552764845','xid2':null},{'xid':'5','xx':'51.978961025301224','xid2':null},{'xid':'6','xx':'53.91784891162862','xid2':null}]";
          else
                  a="[{'yid':'1','yy':'4.416623935103416','yid2':null},{'yid':'2','yy':'14.43600967526436','yid2':null},{'yid':'3','yy':'22.86536581814289','yid2':null},{'yid':'4','yy':'15.836549922823904','yid2':null},{'yid':'5','yy':'19.726738035678864','yid2':null},{'yid':'6','yy':'19.73786987364292','yid2':null}],'success':1}";*/
          } catch (JSONException e) {
                  e.printStackTrace();
          }
           Pattern pattern = Pattern.compile("[{]{1}.*[}]{1}");
              Matcher matcher = pattern.matcher(a); String z="";
              while (matcher.find()) z=matcher.group();
              z=z.replace("},{", "!");
              z=z.replace("{", "");
              z=z.replace("}", "");
                  String str =z;
                  String delimiter = "!";
                  return str.split(delimiter);
  }
  public static JSONObject json;
  public static int wynik=0;
  public static Wynik instancja=new Wynik();
  public static Wynik get(){
          if(instancja==null)
                  return instancja=new Wynik();
          else
                  return instancja;
  }
}
